package com.spring.arch.operation.tenant.web.dto;

import com.spring.arch.common.dto.AbstractLogicalDTO;
import com.spring.arch.common.dto.AbstractAuditableDTO;
import com.spring.arch.common.dto.AbstractLogicalDTO;
import com.spring.arch.operation.tenant.enums.EnterpriseType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.List;

/**
 * 租客
 * @author Frank
 * @version 1.0.0
 * @since 2020/3/23
 */
@Getter
@Setter
@NoArgsConstructor
public class WebLesseeDTO extends AbstractLogicalDTO {
    
/**
     * 公司名称（租客名称/业主）
     */
    @ApiModelProperty(value="公司名称（租客名称/业主）")
    @NotBlank
    @Size(max = 64)
    private String name;

    /**
     * 客户类型（枚举）
     */
    @ApiModelProperty(value="客户类型（枚举）")
    @NotNull
    private EnterpriseType type = EnterpriseType.LIMITED_LIABILITY;

    /**
     * 客户标识
     */
    @ApiModelProperty(value="客户标识")
    @Size(max = 32)
    private String customerIdentifier;

    /**
     * 所属行业（数据字典【lesseeIndustry】）
     */
    @ApiModelProperty(value="所属行业（数据字典【lesseeIndustry】）")
    @Size(max = 32)
    private String industry;

    /**
     * 成立时间：2020-03-23
     */
    @ApiModelProperty(value="成立时间：2020-03-23")
    private LocalDate foundingTime;

    /**
     * 统一社会信用代码：营业执照编号
     */
    @ApiModelProperty(value="统一社会信用代码：营业执照编号")
    @Size(max = 32)
    private String socialCreditCode;

    /**
     * 注册资本
     */
    @ApiModelProperty(value="注册资本")
    @Size(max = 16)
    private String registeredCapital;

    /**
     * 法人
     */
    @ApiModelProperty(value="法人")
    @Size(max = 32)
    private String legalPerson;

    /**
     * 企业电话
     */
    @ApiModelProperty(value="企业电话")
    @Size(max = 11)
    private String telephone;

    /**
     * 企业地址
     */
    @ApiModelProperty(value="企业地址")
    private String address;

    /**
     * 通讯地址
     */
    @ApiModelProperty(value="通讯地址")
    @NotBlank
    @Size(max = 128)
    private String postalAddress;

    /**
     * 租客联系人
     */
    @ApiModelProperty(value="通讯地址")
    private List<WebLesseeContactDTO> lesseeContacts;

    /**
     * 租客发票信息
     */
    @ApiModelProperty(value="租客发票信息")
    private List<WebLesseeInvoiceDTO> lesseeInvoices;
}
